ChangeLog/1.5

From QEMU

General

  • The default for log output enabled via the '-d' command line switch is now standard error rather than a file. You can obtain the previous behaviour using the '-D' command line switch to specify a file to send the logging to.
  • QEMU now uses poll rather than select, and thus does not have any restriction on the number of open file descriptors.

System emulation

Device emulation

Audio

  • The --audio-card-list configure option is not used anymore. Instead, you can modify default-configs/pci.mak (for the PCI soundcards AC97, HDA and ES1370) and default-configs/sound.mak (for the ISA soundcards) before running "make".
  • The "shortcut" -soundhw option is now available for all targets that have a PCI bus.

Device assignment

  • VFIO supports primary VGA passthrough using the experimental "x-vga=on" option. The following devices seem to work: Nvidia 8400gs, 73001e, NVS290; ATI/AMD Radeon HD5450 and HD7850.
  • VFIO devices support the bootindex= property to override the default boot order for assigned PCI devices.

USB

  • Experimental support for USB 3.0 streams, both in the nec-usb-xhci controller and in the usb-uas USB-attached SCSI device emulation.
  • USB device passthrough has been rewritten to use libusb. For Linux, the two backends can be compiled in a single QEMU executable (if libusb is enabled, usb-host-linux will be the legacy implementation, usb-host will be the libusb-based one; if libusb is disabled, usb-host will be the legacy implementation). For BSD, it has to be chosen at configure time using --enable/disable-libusb (the default is to use libusb if it is available, otherwise use the legacy implementation).

SCSI

  • QEMU can now emulate the VMware PVSCSI device using "-device pvscsi".
  • QEMU can now use tcm_vhost, a virtio-scsi device model based on the Linux-iSCSI implementation of SCSI.

Network cards

  • QEMU can now emulate the VMware paravirtualized network card using "-device vmxnet3".

ARM

  • This release has initial support of KVM for the ARM architecture. This requires a 3.9 or better Linux kernel and a Cortex-A15 CPU.
  • The Zynq board provides a SD host controller interface.
  • The PCI controller model for VersatilePB and Realview boards has been significantly improved in functionality (including MMIO BAR support and a correct PCI IRQ mapping). Note that Linux kernels currently do not take advantage of this; however we autodetect kernels that expect the behaviour of an old broken QEMU and fall back to that. (The old IRQ behaviour can be forced with "-global versatile_pci.broken-irq-mapping=1" if absolutely necessary.)
  • Incorrect handling of the SRS instruction in Thumb mode has been fixed.
  • Performance of TCG emulation of ARM targets is improved over previous releases.
  • Migration and vm save/load now works correctly on the vexpress-a15 and vexpress-a9 models.

PPC

  • Various improvements to TCG code generation
  • KVM synchronizes more state
  • Fix a few issues that blocked Mac OS X from working (still not 100% there though!)
  • Refactoring and improvement of soft mmu emulation for book3s
  • Implement various new instructions for ISA 2.05 and ISA 2.06 compatibility (-cpu POWER7)
  • Implement support for KVM based e500 family watchdog

s390x

  • Various accuracy fixes for device emulation
  • Faster I/O hypercalls
  • Add firmware to boot from virtio-ccw disks
  • Guest kernel panics are notified to the host

SPARC

  • Improve sun4u interrupt mapping, so that multiple PCI devices can be used simultaneously

x86

  • x86 supports emulation of a TPM (Trusted Platform Module) on machines that have a hardware TPM
  • Various speedups in TCG emulation of x86
  • The iPXE ROMs that are distributed with QEMU support EFI
  • TCG supports the SSE4.1, SSE4.2, PCLMULQDQ, AES-NI, BMI and ADX extensions.
  • A paravirtual device is included that lets the guest notifies kernel panics to the host.
  • CPU hot-add support with cpu-add QMP command. More details Features/CPUHotplug.
  • new CPU properties "feature-words" and "filtered-features" to allow introspection of supported and not supported CPU features.

QMP

  • QEMU now generates a DEVICE_DELETED event when the guest acknowledges a device hot-unplug operation.
  • Much better handling for non-ASCII codepoints in JSON strings

Character devices

  • Character devices gained support for flow control. More details in Features/ChardevFlowControl
  • All kinds of character devices can now be hot-plugged. Character device hotplug is also supported from the "human" monitor.

Block devices

  • IDE and SCSI disks always have the ability to issue "discard" (aka TRIM or UNMAP) commands. However, by default "discard" commands are silently ignored as they can cause performance degradation and fragmentation. To enable them, the "-drive" option now supports a "discard" suboption; the default value is "ignore" (or its synonym "off"), and the other valid value is "unmap" (or "on").
  • Sheepdog drives can also be specified with URIs.
  • iSCSI disks support on-line resizing using block_resize. Similar to block devices, the resize has to be done first outside QEMU.
  • Various performance improvements in qcow2 internal snapshots (savevm).
  • The NBD backend has improved latency.
  • qemu-nbd can now skip image format probing using the -f/--format command-line option.
  • VHDX (MS Hyper-V) image format has initial read-only support. Dynamic and fixed sized disks are supported, but not differencing images (e.g. VHDX images with a backing file). Read-only is strictly enforced, and the 'readonly=on' option must be used for any VHDX images.
  • Secure Shell (ssh) support. Access remote disks over ssh using qemu -drive file=ssh://host/path/to/file

Live Migration

  • Further improvements in throughput (up to +130%: 4.2 Gbps in 1.5 vs 1.8 Gbps in 1.4) and latency.

User interface

  • QEMU now provides a GTK+ interface. The interface uses the VTE library to provide better terminal emulation for serial consoles and the monitor.
  • A new VNC extension has been added to communicate LED state changes for the keyboard.

VNC

  • Websocket connections can now be encrypted with TLS.

User-mode emulation

  • Threaded programs are now more stable, though still experimental.

Guest agent

  • New commands in qemu-ga let the host put CPUs online/offline with help from the guest OS (Linux only)
  • Low impact CVE-2013-2007 ("qemu: guest agent creates files with insecure permissions in daemon mode") is fixed.
    • Note for guest administrators: unix domain sockets, logfiles etc. created by previous versions of qemu-ga do not have their file mode bits reset by this change; only newly created files have mode 0600 when daemonizing. Please delete your old files or change their permissions manually when upgrading.
    • The guest-file-open QMP command continues to create files with mode 0666 for compatibility reasons.

Host support

  • QEMU is now a lot faster on Windows hosts than in previous versions
  • libcacard has been ported to Windows.

Known issues

  • The GTK+ backend does not compile on BSD systems (including Mac OS X). This will likely be fixed in a later stable update.